package com.atguigu.gmall.product.client;

import com.atguigu.gmall.model.product.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@FeignClient(name = "service-product",fallback = DegradedProductFeignclient.class)
public interface ProductFeignClient {

    //1、查询一二三级分类  Result 统一返回结果对象  VUE前端使用的 状态码 判断是否成功了
    @GetMapping("/api/product/inner/getBaseCategoryView/{category3Id}")
    public BaseCategoryView getBaseCategoryView(@PathVariable Long category3Id);

    //2、查询Sku中的信息  sku_info  查询Sku中的图片  sku_image
    @GetMapping("/api/product/inner/getSkuInfo/{skuId}")
    public SkuInfo getSkuInfo(@PathVariable Long skuId);

    //3:单独查询价格
    @GetMapping("/api/product/inner/getPrice/{skuId}")
    public BigDecimal getPrice(@PathVariable Long skuId);

    //4、查询spu中总销售属性 及属性值   同时选中一个默认商品
    @GetMapping("/api/product/inner/getSaleAttrAndValeAndChecked/{skuId}/{spuId}")
    public List<SpuSaleAttr> getSaleAttrAndValeAndChecked(@PathVariable Long skuId, @PathVariable Long spuId);

    //5：查询页面上 组合与skuId之间关系  { 1|5|7 ：skuId,1|4|7 : skuId } json格式的字符串
    @GetMapping("/api/product/inner/getSkuValueIdsMap/{spuId}")
    public Map<String,String> getSkuValueIdsMap(@PathVariable Long spuId);

    //查询所有一二三级分类视图
    @GetMapping("/api/product/getBaseCategoryViewList")
    public List<BaseCategoryView> getBaseCategoryViewList();

    //根据tmId 查询一个品牌
    @GetMapping("/api/product/getBaseTrademark/{tmId}")
    public BaseTrademark getBaseTrademark(@PathVariable Long tmId);

    //根据skuId 查询 sku_attr_value   base_attr_info  base_attr_value
    @GetMapping("/api/product/getSkuAttrValue/{skuId}")
    public List<SkuAttrValue> getSkuAttrValue(@PathVariable Long skuId);
}
